package com.hawk.eye.api.storage;

import com.hawk.eye.api.storage.dto.LogMessageDTO;
import com.hawk.eye.api.storage.dto.ServiceLogReqDTO;
import com.hawk.eye.api.storage.dto.ServiceLogRespDTO;
import com.hawk.eye.common.utils.Kv;
import com.hawk.eye.common.page.PageQuery;
import com.hawk.eye.common.page.PageResult;

import java.util.List;
import java.util.Map;

/**
 * 日志信息存储接口
 * @author salad
 * @date 2023-10-23
 */
public interface ILogMessageStorage {

    /**
     * 标识，要求全局唯一
     *
     * @return 标识
     */
    String identity();

    /**
     * 存储日志信息
     * @param messageDTO 日志信息的DTO
     * @param logMessageMap 日志详细信息
     */
    default void saveLogMessage(LogMessageDTO messageDTO, Map<String, Object> logMessageMap) {

    }

    /**
     * 告警日志分页查询
     * @param pageQuery 分页参数
     * @param reqDTO 查询参数
     * @return 日志数据
     */
    default PageResult<ServiceLogRespDTO> page(PageQuery pageQuery, ServiceLogReqDTO reqDTO) {
        return null;
    }

    /**
     * 告警日志根据ID查看详情
     * @param baseAlarmId 日志基础表ID
     * @return 日志数据
     */
    default ServiceLogRespDTO detail(Long baseAlarmId) {
        return null;
    }

    default List<Kv> serviceErrorStatistics(Map<String, Object> params) {
        return null;
    }

    default List<Kv> errorType(Map<String, Object> params) {
        return null;
    }

    default List<Kv> serviceErrorTop(Map<String, Object> params) {
        return null;
    }

    default List<Kv> problemTop(Map<String, Object> params) {
        return null;
    }

}
